package com.github.jjobes.slidedatetimepicker;

import java.lang.reflect.Field;

import com.handmark.pulltorefresh.library.R;

import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;
import android.widget.DatePicker;
import android.widget.NumberPicker;

/**
 * A subclass of {@link android.widget.DatePicker} that uses reflection to allow
 * for customization of the default blue dividers.
 * 
 * @author jjobes
 * 
 */
public class CustomDatePicker extends DatePicker {
	private static final String TAG = "CustomDatePicker";

	public CustomDatePicker(Context context, AttributeSet attrs) {
		super(context, attrs);

		Class<?> idClass = null;
		Class<?> numberPickerClass = null;
		Field selectionDividerField = null;
		Field monthField = null;
		Field dayField = null;
		Field yearField = null;
		NumberPicker monthNumberPicker = null;
		NumberPicker dayNumberPicker = null;
		NumberPicker yearNumberPicker = null;

		try {
			// Create an instance of the id class
			idClass = Class.forName("com.android.internal.R$id");

			// Get the fields that store the resource IDs for the month, day and
			// year NumberPickers
			monthField = idClass.getField("month");
			dayField = idClass.getField("day");
			yearField = idClass.getField("year");

			// Use the resource IDs to get references to the month, day and year
			// NumberPickers
			monthNumberPicker = (NumberPicker) findViewById(monthField.getInt(null));
			dayNumberPicker = (NumberPicker) findViewById(dayField.getInt(null));
			yearNumberPicker = (NumberPicker) findViewById(yearField.getInt(null));

			numberPickerClass = Class.forName("android.widget.NumberPicker");

			// Set the value of the mSelectionDivider field in the month, day
			// and year NumberPickers
			// to refer to our custom drawables
			selectionDividerField = numberPickerClass.getDeclaredField("mSelectionDivider");
			selectionDividerField.setAccessible(true);
			selectionDividerField.set(monthNumberPicker, getResources().getDrawable(R.drawable.selection_divider));
			selectionDividerField.set(dayNumberPicker, getResources().getDrawable(R.drawable.selection_divider));
			selectionDividerField.set(yearNumberPicker, getResources().getDrawable(R.drawable.selection_divider));
		} catch (ClassNotFoundException e) {
			Log.e(TAG, "ClassNotFoundException in CustomDatePicker", e);
		} catch (NoSuchFieldException e) {
			Log.e(TAG, "NoSuchFieldException in CustomDatePicker", e);
		} catch (IllegalAccessException e) {
			Log.e(TAG, "IllegalAccessException in CustomDatePicker", e);
		} catch (IllegalArgumentException e) {
			Log.e(TAG, "IllegalArgumentException in CustomDatePicker", e);
		}
	}
}
